60c0d2d14b92c0337524a4fefd063af49e4dc7dc,sql/src/main/java/io/crate/action/job/ContextPreparer.java,InnerPreparer,visitNestedLoopPhase,#NestedLoopPhase#PreparerContext#,574

Before Change



            FlatProjectorChain flatProjectorChain;
            if (!phase.projections().isEmpty()) {
                flatProjectorChain = FlatProjectorChain.withAttachedDownstream(
                    pageDownstreamFactory.projectorFactory(),
                    ramAccountingContext,
                    phase.projections(),
                    downstreamRowReceiver,
                    phase.jobId()
                );
            } else {
                flatProjectorChain = FlatProjectorChain.withReceivers(Collections.singletonList(downstreamRowReceiver));
            }
            Predicate<Row> joinCondition = RowFilter.create(inputFactory, phase.joinCondition());

            NestedLoopOperation nestedLoopOperation = new NestedLoopOperation(
                phase.phaseId(),
                flatProjectorChain.firstProjector(),
                joinCondition,
                phase.joinType(),
                phase.numLeftOutputs(),

After Change


        @Override
        public Boolean visitNestedLoopPhase(NestedLoopPhase phase, PreparerContext context) {
            RamAccountingContext ramAccountingContext = RamAccountingContext.forExecutionPhase(circuitBreaker, phase);
            RowReceiver lastRR = context.getRowReceiver(phase, Paging.PAGE_SIZE);

            RowReceiver firstRR = ProjectorChain.prependProjectors(
                lastRR, phase.projections(), phase.jobId(), ramAccountingContext, pageDownstreamFactory.projectorFactory());
            Predicate<Row> joinCondition = RowFilter.create(inputFactory, phase.joinCondition());

            NestedLoopOperation nestedLoopOperation = new NestedLoopOperation(